/*
 * @lc app=leetcode.cn id=520 lang=java
 *
 * [520] 检测大写字母
 */

// @lc code=start
class Solution {
    //java提供了isUpperCase这样的判断方法，不然就得用ASCII码值判断，麻烦一点。
    // 其实感觉这个方法调用起来也麻烦。。
    public boolean detectCapitalUse(String word) {
        //只有一个字符一定是true
        if(word.length() == 1) return true;

        //第一个为小写，第二个为大写的情况一定非法。
        if( Character.isLowerCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1)))
                return false;

        //其他情况长度为2都是合法
        if(word.length() ==2){
            return true;
        }
        //如果单词大于两个字符，那么就只需要分两种情况
        if(Character.isUpperCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1))){
            //两个都是大写，代表全是大写字母
            for(int i=2;i<word.length();i++){
                if(Character.isLowerCase(word.charAt(i))){
                    return false;
                }
            }
        }else{//另外的情况就得全是小写才行
            for(int i=2;i<word.length();i++){
                if(Character.isUpperCase(word.charAt(i))){
                    return false;
                }
            }
        }
        return true;
    }
}
// @lc code=end

